package com.example.common;

// 导入lombok库的Data注解，用于自动生成getter和setter方法
import lombok.Data;

// 使用@Data注解，自动为类中的字段生成getter和setter方法
@Data
public class Result {
    // 状态码，用于标识请求的结果，如"200"表示成功，"500"表示失败等
    private String code;
    // 消息，用于提供更详细的请求结果信息
    private String msg;
    // 数据，用于携带请求返回的具体数据
    private Object data;

    // 私有构造函数，只接受数据作为参数，用于内部创建带有数据的成功响应
    private Result(Object data) {
        this.data = data;
    }



    // 无参构造函数，用于创建空的Result对象
    public Result() {
    }

    // 静态方法，用于创建表示成功的Result对象，状态码为"200"，消息为"请求成功"
    public static Result success() {
        Result result = new Result();
        result.setCode("200");
        result.setMsg("请求成功");
        return result;
    }

    // 静态方法，用于创建表示成功的Result对象，并携带返回的数据
    public static Result success(Object data) {
        Result result = success(); // 先创建一个成功的Result对象
        result.setData(data); // 然后设置返回的数据
        return result;
    }

    // 静态方法，用于创建表示失败的Result对象，状态码为"500"，消息为"请求失败"
    public static Result error() {
        Result result = new Result();
        result.setCode("500");
        result.setMsg("请求失败");
        return result;
    }

    // 静态方法，用于创建表示失败的Result对象，并允许自定义状态码和消息
    public static Result error(String code, String msg) {
        Result result = new Result();
        result.setCode(code);
        result.setMsg(msg);
        return result;
    }

}